WebClient এবং Security Integration

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client)
92
92

Spring Boot এ WebClient এবং Security ইন্টিগ্রেশন একটি শক্তিশালী সংমিশ্রণ যা নিরাপদভাবে API কল করতে এবং প্রয়োজনীয় অথেনটিকেশন বা অথরাইজেশন পরিচালনা করতে ব্যবহৃত হয়। WebClient Spring's reactive HTTP client, যা Spring Security এর সাথে OAuth2 বা Basic Authentication এর মাধ্যমে একত্রিত করা যেতে পারে।


১. WebClient এবং Security এর ইন্টিগ্রেশন কেস

  1. Basic Authentication ব্যবহার করে API কল করা।
  2. OAuth2 Token ব্যবহার করে নিরাপদ API কল করা।
  3. Custom Authentication Headers ব্যবহার করে API কল।

২. Maven Dependencies

pom.xml এ নিচের ডিপেন্ডেন্সিগুলি যোগ করুন:

<dependencies>
    <!-- WebClient -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>

    <!-- Security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <!-- OAuth2 Client (যদি OAuth2 প্রয়োজন হয়) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-client</artifactId>
    </dependency>
</dependencies>

৩. WebClient Configuration

WebClient ব্যবহার করতে হলে WebClient.Builder কনফিগার করা প্রয়োজন।

WebClient Bean তৈরি:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient webClient(WebClient.Builder builder) {
        return builder.baseUrl("https://api.example.com") // আপনার API এর বেস URL
                .build();
    }
}

৪. Basic Authentication সহ WebClient

Basic Authentication ব্যবহারের জন্য HttpHeadersAuthorization হেডার যোগ করতে হয়।

উদাহরণ:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

import java.util.Base64;

@Service
public class ApiService {

    private final WebClient webClient;

    @Autowired
    public ApiService(WebClient webClient) {
        this.webClient = webClient;
    }

    public String getDataWithBasicAuth(String username, String password) {
        String credentials = username + ":" + password;
        String encodedCredentials = Base64.getEncoder().encodeToString(credentials.getBytes());

        return webClient.get()
                .uri("/data")
                .header(HttpHeaders.AUTHORIZATION, "Basic " + encodedCredentials)
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

৫. OAuth2 Token সহ WebClient

Spring Security OAuth2 Integration ব্যবহার করে API কল করার সময় টোকেন স্বয়ংক্রিয়ভাবে হেডারে যোগ করা হয়।

OAuth2 Configuration:

spring.security.oauth2.client.registration.myclient.client-id=YOUR_CLIENT_ID
spring.security.oauth2.client.registration.myclient.client-secret=YOUR_CLIENT_SECRET
spring.security.oauth2.client.registration.myclient.scope=read,write
spring.security.oauth2.client.registration.myclient.authorization-grant-type=client_credentials
spring.security.oauth2.client.provider.myclient.token-uri=https://oauth2-provider.com/oauth2/token

WebClient Bean (OAuth2 সহ):

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.OAuth2AuthorizeRequest;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientOAuth2Config {

    @Bean
    public OAuth2AuthorizedClientManager authorizedClientManager(
            ClientRegistrationRepository clientRegistrationRepository,
            OAuth2AuthorizedClientRepository authorizedClientRepository) {
        return new DefaultOAuth2AuthorizedClientManager(clientRegistrationRepository, authorizedClientRepository);
    }

    @Bean
    public WebClient webClient(WebClient.Builder builder, OAuth2AuthorizedClientManager authorizedClientManager) {
        return builder.filter((request, next) -> {
            OAuth2AuthorizeRequest authorizeRequest = OAuth2AuthorizeRequest.withClientRegistrationId("myclient").principal("principal").build();
            String token = authorizedClientManager.authorize(authorizeRequest).getAccessToken().getTokenValue();

            return next.exchange(
                    request.mutate()
                            .header(HttpHeaders.AUTHORIZATION, "Bearer " + token)
                            .build()
            );
        }).build();
    }
}

API Service:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class ApiService {

    private final WebClient webClient;

    @Autowired
    public ApiService(WebClient webClient) {
        this.webClient = webClient;
    }

    public String getDataWithOAuth2() {
        return webClient.get()
                .uri("/secure-data")
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

৬. Custom Authentication Headers সহ WebClient

Custom Authentication Header প্রয়োজন হলে সরাসরি হেডারে মান সেট করুন।

উদাহরণ:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class ApiService {

    private final WebClient webClient;

    @Autowired
    public ApiService(WebClient webClient) {
        this.webClient = webClient;
    }

    public String getDataWithCustomHeader() {
        return webClient.get()
                .uri("/custom-auth")
                .header(HttpHeaders.AUTHORIZATION, "Bearer your-custom-token")
                .header("X-Custom-Header", "CustomValue")
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

৭. Controller তৈরি করুন

WebClient এর মাধ্যমে ডেটা ফেচ করার জন্য Controller যোগ করুন।

উদাহরণ:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ApiController {

    @Autowired
    private ApiService apiService;

    @GetMapping("/fetch-data")
    public String fetchData() {
        return apiService.getDataWithOAuth2(); // OAuth2 Integration এর উদাহরণ
    }
}

৮. টেস্টিং

  1. অ্যাপ্লিকেশন রান করুন।
  2. ব্রাউজারে বা Postman-এ http://localhost:8080/fetch-data হিট করুন।
  3. সঠিক অথেনটিকেশন অনুযায়ী API রেসপন্স ফিরে আসবে।

উপসংহার

Spring Boot এ WebClient এবং Security Integration আপনাকে নিরাপদ এবং কার্যকরভাবে API কল করতে দেয়। Basic Authentication, OAuth2, এবং Custom Headers ব্যবহারের সুবিধা প্রদান করে এটি মাইক্রোসার্ভিস কমিউনিকেশনের জন্য একটি শক্তিশালী টুল।

যদি আপনাকে নির্দিষ্ট কোনো অংশে সাহায্য করতে হয়, জানাবেন! 😊

Content added By

WebClient এর মাধ্যমে Basic এবং Bearer Token Authentication

57
57

স্প্রিং বুটে WebClient ব্যবহার করে Basic এবং Bearer Token Authentication করার পদ্ধতি নিচে বিস্তারিতভাবে উদাহরণসহ দেখানো হয়েছে।

১. Basic Authentication কনফিগারেশন

Basic Authentication-এ ব্যবহারকারী নাম এবং পাসওয়ার্ড সরাসরি HTTP হেডারে Authorization ফিল্ডে Base64 এনকোডেড ফরম্যাটে পাঠানো হয়।

import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class BasicAuthWebClient {

    private final WebClient webClient;

    public BasicAuthWebClient(WebClient.Builder webClientBuilder) {
        this.webClient = webClientBuilder
                .baseUrl("https://api.example.com")
                .defaultHeaders(headers -> headers.setBasicAuth("username", "password"))
                .build();
    }

    public String getProtectedResource() {
        return webClient.get()
                .uri("/protected-resource")
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

২. ডিফল্ট WebClient Bean তৈরি

অন্য যেকোনো জায়গায় Basic Authentication যুক্ত করতে চাইলে এটি Bean আকারে ব্যবহার করা যায়।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient basicAuthWebClient() {
        return WebClient.builder()
                .baseUrl("https://api.example.com")
                .defaultHeaders(headers -> headers.setBasicAuth("username", "password"))
                .build();
    }
}

WebClient এর মাধ্যমে Bearer Token Authentication

১. Bearer Token Authentication কনফিগারেশন

Bearer Token ব্যবহার করে সুরক্ষিত API অ্যাক্সেস করার সময় টোকেন Authorization হেডারে Bearer <token> ফরম্যাটে পাঠানো হয়।

import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class BearerTokenWebClient {

    private final WebClient webClient;

    public BearerTokenWebClient(WebClient.Builder webClientBuilder) {
        this.webClient = webClientBuilder
                .baseUrl("https://api.example.com")
                .defaultHeaders(headers -> headers.setBearerAuth("your-access-token"))
                .build();
    }

    public String getProtectedResource() {
        return webClient.get()
                .uri("/protected-resource")
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

২. ডায়নামিকভাবে টোকেন যোগ করা

যদি টোকেন ডায়নামিকভাবে সেট করতে হয়, তবে রিকোয়েস্টের সময় হেডারে টোকেন যোগ করা যায়।

import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class DynamicBearerTokenWebClient {

    private final WebClient webClient;

    public DynamicBearerTokenWebClient(WebClient.Builder webClientBuilder) {
        this.webClient = webClientBuilder
                .baseUrl("https://api.example.com")
                .build();
    }

    public String getProtectedResource(String accessToken) {
        return webClient.get()
                .uri("/protected-resource")
                .headers(headers -> headers.setBearerAuth(accessToken))
                .retrieve()
                .bodyToMono(String.class)
                .block();
    }
}

পূর্ণ উদাহরণ: Basic এবং Bearer Token Authentication

কন্ট্রোলার থেকে কল করা

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WebClientController {

    @Autowired
    private BasicAuthWebClient basicAuthWebClient;

    @Autowired
    private BearerTokenWebClient bearerTokenWebClient;

    @Autowired
    private DynamicBearerTokenWebClient dynamicBearerTokenWebClient;

    @GetMapping("/basic-auth")
    public String callWithBasicAuth() {
        return basicAuthWebClient.getProtectedResource();
    }

    @GetMapping("/bearer-token")
    public String callWithBearerToken() {
        return bearerTokenWebClient.getProtectedResource();
    }

    @GetMapping("/dynamic-bearer-token")
    public String callWithDynamicBearerToken() {
        String token = "your-access-token"; // টোকেন সংগ্রহের উপায় অনুযায়ী ডাইনামিক টোকেন ব্যবহার করুন
        return dynamicBearerTokenWebClient.getProtectedResource(token);
    }
}

গুরুত্বপূর্ণ পয়েন্ট

  1. Basic Authentication:
    • Base64 এনকোডিংয়ে সংবেদনশীল তথ্য (username এবং password) সুরক্ষিত নয়। এটি SSL/TLS-সহ ব্যবহার করুন।
  2. Bearer Token:
    • টোকেনটি ডাইনামিকভাবে সংগ্রহ করুন (যেমন OAuth2 ফ্লো ব্যবহার করে) এবং নিরাপদে সংরক্ষণ করুন।
  3. Exception Handling:
    • WebClient-এর onStatus ব্যবহার করে HTTP ত্রুটি হ্যান্ডলিং যুক্ত করুন।

Error Handling উদাহরণ

return webClient.get()
        .uri("/protected-resource")
        .retrieve()
        .onStatus(
            HttpStatus::isError,
            response -> Mono.error(new RuntimeException("API call failed"))
        )
        .bodyToMono(String.class)
        .block();

উপরের উদাহরণগুলো ব্যবহার করে আপনি WebClient দিয়ে Basic এবং Bearer Token Authentication সঠিকভাবে বাস্তবায়ন করতে পারবেন।

Content added By

Spring Security এবং WebClient এর Integration

110
110

Spring Security এবং WebClient-এর ইন্টিগ্রেশন ব্যবহার করে আপনি সুরক্ষিত HTTP রিকুয়েস্ট পরিচালনা করতে পারেন। এটি প্রায়ই OAuth2, JWT, Basic Authentication, বা API Key ব্যবহার করে নিরাপদ অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়।


প্রয়োজনীয় ডিপেন্ডেন্সি

Maven ডিপেন্ডেন্সি

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-jose</artifactId>
</dependency>

Spring Security এবং WebClient সেটআপ

১. WebClient Bean তৈরি (Spring Security সহ)

WebClient-এ Spring Security কনফিগার করতে ServerOAuth2AuthorizedClientExchangeFilterFunction ব্যবহার করতে হবে।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient webClient(ClientRegistrationRepository clientRegistrationRepository,
                               org.springframework.security.oauth2.client.web.server.ServerOAuth2AuthorizedClientRepository authorizedClientRepository) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2 =
                new ServerOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrationRepository, authorizedClientRepository);
        oauth2.setDefaultOAuth2AuthorizedClient(true);

        return WebClient.builder()
                .filter(oauth2)
                .build();
    }
}

২. application.yml (OAuth2 Client Configuration)

OAuth2 ক্লায়েন্ট কনফিগারেশনের জন্য application.yml এ নিচের সেটিংস যোগ করুন:

spring:
  security:
    oauth2:
      client:
        registration:
          my-client:
            client-id: your-client-id
            client-secret: your-client-secret
            authorization-grant-type: client_credentials
            scope: read
        provider:
          my-provider:
            token-uri: https://example.com/oauth/token

৩. WebClient ব্যবহার করে API কল

WebClient Bean ব্যবহার করে সুরক্ষিত API কল করতে পারেন।

GET Request:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

@RestController
public class ApiController {

    @Autowired
    private WebClient webClient;

    @GetMapping("/secure-api")
    public Mono<String> callSecureApi() {
        return webClient.get()
                .uri("https://api.example.com/secure-data")
                .retrieve()
                .bodyToMono(String.class);
    }
}

POST Request with Bearer Token:

@GetMapping("/post-secure")
public Mono<String> postSecure() {
    return webClient.post()
            .uri("https://api.example.com/secure-endpoint")
            .bodyValue(new MyRequest("data"))
            .retrieve()
            .bodyToMono(String.class);
}

static class MyRequest {
    private String value;

    public MyRequest(String value) {
        this.value = value;
    }

    // Getters and setters
}

৪. Basic Authentication সহ WebClient

WebClient Bean কনফিগারেশন:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientBasicAuthConfig {

    @Bean
    public WebClient webClientWithBasicAuth() {
        return WebClient.builder()
                .defaultHeaders(headers -> headers.setBasicAuth("username", "password"))
                .build();
    }
}

API কল:

@GetMapping("/basic-auth-api")
public Mono<String> basicAuthApi() {
    return webClientWithBasicAuth.get()
            .uri("https://api.example.com/basic-auth")
            .retrieve()
            .bodyToMono(String.class);
}

৫. JWT Token সহ WebClient

JWT Token ব্যবহারের জন্য Custom Header যোগ করুন:

@Bean
public WebClient webClientWithJwt() {
    return WebClient.builder()
            .defaultHeaders(headers -> headers.setBearerAuth("your-jwt-token"))
            .build();
}

API কল:

@GetMapping("/jwt-auth-api")
public Mono<String> jwtAuthApi() {
    return webClientWithJwt.get()
            .uri("https://api.example.com/jwt-secure")
            .retrieve()
            .bodyToMono(String.class);
}

Spring Security এর সুবিধা WebClient-এ

  1. OAuth2 Integration: Spring Security সরাসরি OAuth2 ক্লায়েন্ট সাপোর্ট দেয়।
  2. Bearer Token Management: টোকেন স্বয়ংক্রিয়ভাবে যোগ ও রিফ্রেশ হয়।
  3. Custom Authentication: Basic Auth বা Custom JWT ব্যবহার সহজ।

উপসংহার

Spring Security এবং WebClient এর ইন্টিগ্রেশন আপনাকে সুরক্ষিত HTTP কল সহজে পরিচালনা করতে সাহায্য করে। আপনি OAuth2, Basic Auth বা JWT Token ব্যবহার করে বিভিন্ন ধরণের নিরাপত্তা সমর্থিত API কল করতে পারবেন।

Content added By

উদাহরণ সহ WebClient এবং Security ব্যবহার

74
74

Spring Boot এর WebClient হল একটি আধুনিক, নন-ব্লকিং HTTP ক্লায়েন্ট, যা Spring Security এর সাথে ইন্টিগ্রেট করে নিরাপদ HTTP রিকোয়েস্ট প্রেরণ করতে ব্যবহৃত হয়। WebClient ব্যবহার করে আমরা বিভিন্ন ধরনের Authentication এবং Authorization মেকানিজম সহজেই ইমপ্লিমেন্ট করতে পারি।


WebClient এর সাথে Security ব্যবহার করার পদ্ধতি

১. সাধারণ Authentication (Basic Auth)

WebClient এর মাধ্যমে একটি বেসিক অ্যান্থেন্টিকেশন হেডার যুক্ত করা যায়।

import org.springframework.web.reactive.function.client.WebClient;

public class BasicAuthExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.builder()
                .baseUrl("https://example.com")
                .defaultHeaders(headers -> headers.setBasicAuth("username", "password")) // Basic Auth
                .build();

        String response = webClient.get()
                .uri("/secure-endpoint")
                .retrieve()
                .bodyToMono(String.class)
                .block(); // Blocking for simplicity

        System.out.println("Response: " + response);
    }
}

২. Bearer Token Authentication

Bearer Token ব্যবহারের মাধ্যমে API-তে Authorization হেডার যোগ করা হয়।

import org.springframework.web.reactive.function.client.WebClient;

public class BearerTokenExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.builder()
                .baseUrl("https://example.com")
                .defaultHeader("Authorization", "Bearer your-access-token") // Bearer Token
                .build();

        String response = webClient.get()
                .uri("/secure-endpoint")
                .retrieve()
                .bodyToMono(String.class)
                .block(); // Blocking for simplicity

        System.out.println("Response: " + response);
    }
}

৩. OAuth2 Authentication (Spring Security Integration)

Spring Boot এবং Spring Security ব্যবহার করে WebClient এর মাধ্যমে OAuth2 ব্যবহার করা যায়।

ডিপেন্ডেন্সি যুক্ত করুন
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
Application.properties ফাইল কনফিগার করুন
spring.security.oauth2.client.registration.myclient.client-id=my-client-id
spring.security.oauth2.client.registration.myclient.client-secret=my-client-secret
spring.security.oauth2.client.registration.myclient.authorization-grant-type=client_credentials
spring.security.oauth2.client.provider.myprovider.token-uri=https://example.com/oauth/token
WebClient Bean তৈরি করুন
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient webClient(OAuth2AuthorizedClientService authorizedClientService) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2Filter =
                new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientService);

        return WebClient.builder()
                .apply(oauth2Filter.oauth2Configuration())
                .baseUrl("https://example.com")
                .build();
    }
}
OAuth2 রিকোয়েস্ট প্রেরণ করুন
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class SecureService {
    private final WebClient webClient;

    public SecureService(WebClient webClient) {
        this.webClient = webClient;
    }

    public String fetchSecureData() {
        return webClient.get()
                .uri("/secure-endpoint")
                .retrieve()
                .bodyToMono(String.class)
                .block(); // Blocking for simplicity
    }
}

WebClient এর মাধ্যমে Security সহ POST রিকোয়েস্ট

JSON Payload সহ POST রিকোয়েস্ট

import org.springframework.web.reactive.function.client.WebClient;

import java.util.HashMap;
import java.util.Map;

public class PostRequestExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.builder()
                .baseUrl("https://example.com")
                .defaultHeader("Authorization", "Bearer your-access-token")
                .build();

        Map<String, String> payload = new HashMap<>();
        payload.put("key1", "value1");
        payload.put("key2", "value2");

        String response = webClient.post()
                .uri("/secure-endpoint")
                .bodyValue(payload) // JSON Payload
                .retrieve()
                .bodyToMono(String.class)
                .block();

        System.out.println("Response: " + response);
    }
}

Spring Security-Enabled WebClient (Global Configuration)

Spring Security ব্যবহার করে WebClient এর জন্য গ্লোবাল সিকিউরিটি কনফিগারেশন করা যায়।

SecurityConfig ক্লাস:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
@EnableWebFluxSecurity
public class SecurityConfig {

    @Bean
    public WebClient secureWebClient(OAuth2AuthorizedClientManager clientManager) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2Filter =
                new ServerOAuth2AuthorizedClientExchangeFilterFunction(clientManager);

        return WebClient.builder()
                .apply(oauth2Filter.oauth2Configuration())
                .baseUrl("https://example.com")
                .build();
    }
}

WebClient এর সাথে Security ব্যবহারের সুবিধা

  1. নিরাপদ ডেটা ট্রান্সমিশন:
    Basic Auth, Bearer Token, এবং OAuth2 সাপোর্ট করে।
  2. সহজ কাস্টমাইজেশন:
    ডিফল্ট হেডার, হেডার ইন্ট্রাসেপটর, এবং টাইমআউট সহজেই কনফিগার করা যায়।
  3. রিঅ্যাকটিভ এবং স্কেলেবল:
    নন-ব্লকিং প্রক্রিয়ার কারণে উচ্চ কার্যক্ষমতা প্রদান করে।
  4. Spring Security Integration:
    OAuth2 এবং অন্যান্য সিকিউরিটি মেকানিজমের সরাসরি সাপোর্ট।

উপসংহার

Spring Boot এর WebClient ব্যবহার করে সহজেই নিরাপদ HTTP রিকোয়েস্ট পাঠানো সম্ভব। Basic Authentication, Bearer Token, এবং OAuth2 ইন্টিগ্রেশন Spring Security-এর মাধ্যমে কার্যকরভাবে পরিচালিত হয়। প্রয়োজনে নির্দিষ্ট কোনো কনফিগারেশন বা উদাহরণ নিয়ে আরও আলোচনা করতে পারেন।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion